# koroFileHeader at Yungoal acer
# Create: 2024-10-28 11:43:02
# LastEdit: 2025-04-10 16:51:01
"""Jenkins平台的脚本工具


关于环境变量的传递

错误的用法：
# 子Shell中变量不可见
AZURE_CLIENT_SECRET=$(python3 utils/jenkins.py)
python3 jobs/backup_jobs.py


正确的用法一：
# 实际上是一行命令，反斜杠是换行符
# AZURE_CLIENT_SECRET是临时变量仅在当前这行可见
AZURE_CLIENT_SECRET=$(python3 utils/jenkins.py) \
python3 jobs/backup_jobs.py

正确的用法二：
# 通过export将变量导出为环境变量全局可见了
export AZURE_CLIENT_SECRET=$(python3 utils/jenkins.py)
python3 jobs/backup_jobs.py
"""
__author__ = '749B'

import configparser
import os


def get_secret():
    """从ini配置文件中获取AZURE_CLIENT_SECRET"""
    if os.environ.get('AZURE_CLIENT_SECRET'):
        return os.environ.get('AZURE_CLIENT_SECRET')
    config = configparser.ConfigParser()
    config.read(os.environ.get('ACCOUNT_FILE'), encoding='utf-8')
    cred_list = [
        config[sec] for sec in config.sections() if \
            config[sec]['cloud'].startswith('AZURE_') and \
            not config[sec].get('disable') and \
            config[sec]['client_id'] == os.environ.get('AZURE_CLIENT_ID') and \
            config[sec]['tenant_id'] == os.environ.get('AZURE_TENANT_ID')
        ]
    if not cred_list:
        return ''
    return cred_list[0]['client_secret']


if __name__ == '__main__':
    secret = get_secret()
    if secret and 'JENKINS_HOME' in os.environ:
        print(secret)
